package num08;

import javax.xml.stream.events.Characters;

/**
 * 8. 字符串转换整数 (atoi)
 */
class Solution {
    public int myAtoi(String s) {
        int n = s.length();
        char[] chars = s.toCharArray();
        int idx = 0;

        // 去除前导空格
        while (idx < n && chars[idx] == ' ') {
            idx++;
        }

        // 检查第一个字符，可以为正负号/数字
        boolean isNeg = false;
        if (chars[idx] == '-') {
            idx++;
            isNeg = true;
        } else if (chars[idx] == '+') {
            idx++;
        } else if (!Character.isDigit(chars[idx])) {
            return 0;
        }

        // 遍历数字
        int ans = 0;
        while (idx < n && Character.isDigit(chars[idx])) {
            // ASCII转化为对应十进制数字
            int cur = chars[idx++] - '0';
            if (ans > (Integer.MAX_VALUE - cur) / 10) {
                return isNeg ? Integer.MIN_VALUE : Integer.MAX_VALUE;
            }
            ans = ans * 10 + cur;
        }
        return isNeg ? -ans : ans;

    }

    public static void main(String[] args) {
        System.out.println(new Solution().myAtoi("-145872"));
    }
}